科技新知

上一期筆者就介紹寺過swarm的相容性,可以任意地刪除其中node、加入新的node,系統會自動同步各機狀態。今日,我們就來討論一下加減的流程吧。

實戰輪調流程

假設我們有5個 node,都為manager,各個 docker 版本都為28.0.4 ,我們將要關掉node 5 (ubuntu 22),並加入node 6 (ubuntu24),輪調流程如下

  1. 如果node5有vvip,login node 5,關掉vvip
    • systemctl stop keepalived
  2. login node1, 把node5降為drain模式,變為worker,並從群集中刪除
    • docker node update --availability drain node5
    • docker node demote node5
      • 若然node5不是直接關機、刪除,只想好好地離開群集,可以 login node5, 在node5上預先執行 docker swarm leave
    • docker node rm --force node5
      • 如果之前node5有好好地離開群集,而且狀態已經轉為down,那麼就不用"force"了,用最保守的刪除指令就可以 docker node rm node5
  3. login node1, 取得manager token
    • docker swarm join-token manager
  4. node5關機,新增node6,使用相容的ip段,或者使用node5的ip
  5. login node6, 加入群集,設定vvip
    • docker swarm join --token xxxx XX_IP:XX_PORT
    • systemctl stop keepalived

這陷阱這陷阱 偏我遇上

上述的操作,有一些可能的陷阱,筆者就剛好踩過,未來不知道會不會有官方保證

  • docker的版本需要相同,不同版本可能不能加入群集,例如
    • docker 28.0.4 不能加到 docker 27.5.1。
    • docker 27.2.x 不能加到 docker 27.5.1。
  • docker swarm,官方雖然宣稱支援不同版本共存,但這指的是已加入的node,在不解綁的情況下原機升級。
  • 在swarm已有多版本共存的情況下,有一個node選擇完全脫離,它想再加入,也是會失敗的。可能這不是docker自身的限制,而是底層library的相容性問題。筆者在實測不同版本時,就得到這樣的error。docker credentials: cannot check peer: missing selected ALPN property

馬交野


哪吒之魔童鬧海
死亡輪迴
4DX  暗算2
夜校女生
Until Dawn 死亡輪迴
不說話的愛
暗算2
黑箱日誌
Ado SPECIAL LIVE 「心臟」 in Cinema
虎毒不
謊島美人魚
戰役
搗破法蘭克
劇場版忍者亂太郎 毒菇忍者隊最強之軍師
復仇反擊戰
破。地獄 加長版
破.地獄 加長版
貓貓的奇幻漂流
4DX  英語版  MINECRAFT:我的世界大電影
英語版  MINECRAFT:我的世界大電影
4DX    MINECRAFT:我的世界大電影
MINECRAFT:我的世界大電影
劇場版 世界計畫 崩壞的世界與無法歌唱的初音未來
MINECRAFT :我的世界大電影
4DX  SEVENTEEN RIGHT HERE WORLD TOUR IN CINEMAS
PUI PUI 天竺鼠車車 電影版 MOLMAX
摘星廚神.巴黎夢
贖夢
哪吒之魔童鬧海
死亡輪迴